package com.atguigu.gmall.payment.service;

import com.atguigu.gmall.model.enums.PaymentType;
import com.atguigu.gmall.model.order.OrderInfo;
import com.atguigu.gmall.model.payment.PaymentInfo;

import java.util.Map;

public interface PaymentService {

    /**
     * 保存交易信息，在点击支付的时候保存交易信息
     * @param orderInfo  里面存有我们需要的数据
     * @param paymentType 支付的类型，本项目只支持支付宝，可以有微信网银跟多，所以这里是动态的
     */
    void savePaymentInfo(OrderInfo orderInfo , String  paymentType);

    /**
     * 修改订单状态
     * @param out_trade_no
     * @param name
     * @param paramsMap
     */
    void updatePayMentInfo(String out_trade_no, String name, Map<String, String> paramsMap);

    /**
     * 根据订单编号，和支付类型获取交易记录数据
     * @param out_trade_no
     * @param name
     * @return
     */
    PaymentInfo getPaymentInfo(String out_trade_no, String name);

    /**
     * 发起退款
     * @param orderId
     * @return
     */
    boolean refund(Long orderId);
}
